package cc.server.extension.controller;

import cn.dev33.satoken.stp.SaLoginConfig;
import cn.dev33.satoken.stp.StpUtil;
import lombok.extern.slf4j.Slf4j;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;

@Slf4j
@RestController
@RequestMapping("/user")
public class ExtUserController {
    // 测试登录，浏览器访问： http://localhost:8081/user/doLogin?username=zhang&password=123456
    @RequestMapping("doLogin")
    public String doLogin(String username, String password) {
        // 此处仅作模拟示例，真实项目需要从数据库中查询数据进行比对
        if("zhang".equals(username) && "123456".equals(password)) {
            // 登录10001账号，并为生成的 Token 追加扩展参数name
            StpUtil.login(10001, SaLoginConfig.setExtra("name", "zhangsan"));

            // 连缀写法追加多个
            StpUtil.login(10001, SaLoginConfig
                    .setExtra("name", "zhangsan")
                    .setExtra("age", 18)
                    .setExtra("role", "超级管理员"));

            // 获取扩展参数
            String name1 = (String) StpUtil.getExtra("name");

            // 获取任意 Token 的扩展参数
            String token = StpUtil.getTokenValue();
            log.info("Token: {}", token);
            log.error(name1);
            return token;
        }
        return "登录失败";
    }

    // 查询登录状态，浏览器访问： http://localhost:8081/user/isLogin
    @RequestMapping("isLogin")
    public String isLogin() {
        return "当前会话是否登录：" + StpUtil.isLogin();
    }
}
